/**接口
让我们开发这个示例应用。这里我们使用接口来描述一个拥有firstName和lastName字段的对象。
 在TypeScript里，只在两个类型内部的结构兼容那么这两个类型就是兼容的。 这就允许我们在实现接口时候只要保证包含了接口要求的结构就可以，而不必明确地使用 implements语句。 */
interface Person{
  firstName : string;
  lastName : string;
}
/**类型注解
TypeScript里的类型注解是一种轻量级的为函数或变量添加约束的方式。 在这个例子里，我们希望 greeter函数接收一个字符串参数。 然后尝试把 greeter的调用改成传入一个数组：*/ 
function greeter(user: string) {
  return "Hello, " + user;
}
function greeter2(person: Person) {
  return "Hello, " + person;
}
let user = "hams"
let user2 = { firstName : "james",lastName: "band"}
document.body.innerHTML = greeter(user);
// document.body.innerHTML = greeter2(user2);
